package com.wyp168.socket.QQ.qqclient;

import com.wyp168.socket.QQ.qqclient.services.MessageSendClientService;
import com.wyp168.socket.QQ.qqclient.utils.Utility;
import com.wyp168.socket.QQ.qqclient.services.UserClientService;

/**
 * @ClassName QQView
 * @Title 客户端菜单界面
 * @Author wyp168
 * @Date 2022/10/29 15:01
 */
public class QQView {
    private boolean loop = true;    //控制是否显示菜单
    private String key = "";    //接收用户的键盘输入
    private MessageSendClientService messageSendClientService = new MessageSendClientService();  //消息相关的业务逻辑
    //显示主菜单
    public void printMainView() {


        while (loop) {
            System.out.println("========== 欢迎登录网络通讯系统 ==========");
            System.out.println("\t\t 1.登录系统");
            System.out.println("\t\t 9.退出系统");
            System.out.print("请输入你的选择: ");
            key = Utility.scanner.nextLine();
            switch (key) {
                case "1":
                    System.out.print("请输入用户名: ");
                    String userId = Utility.scanner.nextLine();
                    System.out.print("请输入密码: ");
                    String password = Utility.scanner.nextLine();
                    //调用UserClientService.userLogin(userId, password)方法，使用socket连接到服务端来判断当前用户名和密码是否正确
                    //正确，则返回true； 否则返回false
                    if (UserClientService.userLogin(userId, password)) {
                        while (loop) {
                            System.out.println("========== 网络通讯系统二级菜单(用户: " + userId + ")==========");
                            System.out.println("\t\t 1.显示在线用户列表");
                            System.out.println("\t\t 2.群发消息");
                            System.out.println("\t\t 3.私发消息");
                            System.out.println("\t\t 4.发送文件");
                            System.out.println("\t\t 9.退出系统");
                            System.out.print("请输入你的选择: ");
                            key = Utility.scanner.nextLine();
                            switch (key) {
                                case "1" :  //显示所有在线用户列表
                                    UserClientService.getOnlineUsers();
                                    break;
                                case "2" :  //群发消息
                                    System.out.print("请输入想要对大家说的话: ");
                                    String content1 = Utility.scanner.nextLine();
                                    //调用群发消息方法，将消息发送给服务端，通过服务端转发给所有的在线用户
                                    messageSendClientService.sendMessageToAll(content1, userId);
                                    break;
                                case "3" :  //私聊消息
                                    System.out.print("请输入想聊天的用户名(在线): ");
                                    String getterId = Utility.scanner.nextLine();
                                    System.out.print("请输入想要发送的消息: ");
                                    String content = Utility.scanner.nextLine();
                                    //将消息发送给服务端
                                    messageSendClientService.sendMessageToOne(content, getterId, userId);
                                    break;
                                case "4" :  //发送文件到指定用户
                                    System.out.print("请输入文件接收者的用户Id:");
                                    String getterId1 = Utility.scanner.nextLine();
                                    System.out.print("请输入想要发送的文件完整路径(形式: c:/com/admin/wyp168.jpg): ");
                                    String filePathAndFileName = Utility.scanner.nextLine();

                                    System.out.print("请输入目标需要存储的文件位置(形式: c:/com/1001/wyp168.jpg): ");
                                    String destPath = Utility.scanner.nextLine();


                                    //调用发送文件的方法，来实现发送文件功能
                                    messageSendClientService.sendFileToUser(getterId1, userId, filePathAndFileName, destPath);
                                    break;
                                case "9" :
                                    //调用方法，给服务器发送一个退出系统的message
                                    UserClientService.logoutUser();
                                    loop = false;
                                    break;
                            }
                        }
                    } else {    //验证用户名和密码失败
                        System.out.println("账号或密码错误,请重新输入");
                    }
                    break;
                case "9":
                    System.out.println("退出系统");
                    loop = false;
                    break;
            }
        }
    }

    public static void main(String[] args) {
        QQView qqView = new QQView();
        qqView.printMainView();
        System.out.println("客户端退出系统");
    }



}
